<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

    <script>

        var smallArr = ["q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "a", "s", "d", "f", "g", "h", "j", "k", "l", "z", "x", "c", "v", "b", "n", "m"];
        var bigArr = ["A", "W", "E", "R", "T", "Y", "U", "I", "O", "P", "A", "S", "D", "F", "G", "H", "J", "K", "L", "Z", "X", "C", "V", "B", "N", "M"];
        var numArr = [];
        for (var i = 0; i < 10; i++) {
            numArr.push(i + '');
        }

        // 拼接所有数组
        var allArr = smallArr.concat(bigArr, numArr);

        console.log(allArr);



        function code(n) {
            n = n || 5 ;

            var codeArr = [];
            for (var i = 0; i < n; i++) {
                codeArr.push(allArr[rand(0, allArr.length)]);
            }

            console.log(codeArr);   // 数组



            // var flag1 = false , flag2 = false , flag3 = false ;
            // for(var i = 0 ; i < codeArr.length ; i++) {   // 1,S,A,q
            //     if(smallArr.includes(codeArr[i])) {
            //         flag1 = true ;
            //         continue ;
            //     }
            //     if(bigArr.includes(codeArr[i])) {
            //         flag2 = true ;
            //         continue ;
            //     }
            //     if(numArr.includes(codeArr[i])) {
            //         flag3 = true ;
            //         continue ;
            //     }
            // }





            var flag1 = false , flag2 = false , flag3 = false ;

            // 判断有没有小写
            for(var i = 0 ; i < codeArr.length ; i++) {
                if(smallArr.includes(codeArr[i])) {
                    // 说明有小写
                    flag1 = true ;
                    break ;
                }
            }

            // 判断有没有大写
            for(var i = 0 ; i < codeArr.length ; i++) {
                if(bigArr.indexOf(codeArr[i]) > -1) {
                    // 说明有小写
                    flag2 = true ;
                    break ;
                }
            }


            // 判断有没有数字
            for(var i = 0 ; i < codeArr.length ; i++) {
                if(numArr.includes(codeArr[i])) {
                    // 说明有小写
                    flag3 = true ;
                    break ;
                }
            }


            if(flag1 && flag2 && flag3) {
                console.log('验证码合格');
                // return codeArr.join('') ;
            }
            else {
                // 如果不合格就把函数再执行一次
                // return code(n) ;    // 函数自己调用自己称为递归函数
            }


        }


        code(4) ;


        function rand(min, max) {
            return parseInt(Math.random() * (max - min) + min)
        }


    </script>

</body>

</html>